// 用于处理动态菜单数据，将其转为 route 形式
export function fnAddDynamicMenuRoutes(
  menuList = [],
  modules = [],
  routes = []
) {
  
  // 用于保存普通路由数据
  let temp = [];
  // 用于保存存在子路由的路由数据
  let route = [];
  // 遍历数据
  for (let i = 0; i < menuList.length; i++) {
    // 存在子路由，则递归遍历，并返回数据作为 children 保存
    if (menuList[i].children && menuList[i].children.length > 0) {
      // 获取路由的基本格式
      route = getRoute(menuList[i]);
      // 递归处理子路由数据，并返回，将其作为路由的 children 保存
      route.children = fnAddDynamicMenuRoutes(menuList[i].children, modules);
      // 保存存在子路由的路由
      routes.push(route);
    } else {
      
      // 保存普通路由
      temp.push(getRoute(menuList[i], modules));
    }
  }
  // 返回路由结果
  return routes.concat(temp);
}

// 返回路由的基本格式
function getRoute(item, modules) {
  let route = {};
  if (item.path && item.component) {
    // const modules = import.meta.glob("../views/**/*.vue");
    const componentString = item.component.replace(/^\/+/, ""), // 过滤字符串前面所有 '/' 字符
      componentPath = componentString.replace(/\.\w+$/, ""); // 过滤掉后缀名，为了让 import 加入 .vue ，不然会有警告提示...
    let name = item.path.replace(/\//g, "");
    
    // 路由基本格式
    route = {
      // 路由的路径
      path: item.path,
      // 路由名
      name: name,
      title: item.name,
      // 路由所在组件
      // component: () => import("../views/" + componentString + ".vue"),//vite不能用@
      component: modules[name],
      meta: {
        id: item.id,
        icon: item.icon,
      },
      // 路由的子路由
      children: [],
    };
  } else {
    route = {
      // 路由的路径
      path: item.path,
      // 路由名
      name: item.name,
      meta: {
        id: item.id,
        icon: item.icon,
      },
      // 路由的子路由
      children: [],
    };
  }
  // 返回 route
  return route;
}
